/*
需求：
（学生独立完成)
一个文件里面存储了班级同学的信息，每一个学生信息占一行。
格式为：张三-男-23。
要求通过程序实现随机点名器。
运行效果:
70%的概率随机到男生
30%的概率随机到女生
总共随机100万次，统计结果。
注意观察：看生成男生和女生的比例是不是接近于7:3的比例。
 */

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

public class RandomReadName2 {
    public static void main(String[] args) throws IOException {
        //读取name.txt文件，并将每一行添加到namelist列表中
        BufferedReader br = new BufferedReader(new FileReader("name.txt"));
        ArrayList<String> namelist = new ArrayList<>();
        while (br.readLine() != null) {
            String name = br.readLine();
            namelist.add(name);
        }
        br.close();
        //创建两个字符串数组，一个用于存储男生名字，一个用于存储女生名字
        String[] namesBoy = new String[namelist.size()];
        String[] namesGirl = new String[namelist.size()];
        int i = 0;
        int j = 0;
        //将namelist列表中的每一个名字按照“-”分割，然后添加到对应数组中
        for (String name : namelist) {

            if (name.split("-")[1].equals("男")) {
                namesBoy[i] = name.split("-")[0];
                i++;
            } else {
                namesGirl[j] = name.split("-")[0];
                j++;
            }

        }
        //创建一个10位数的数组，用于随机生成索引
        int[] pot = {0, 0, 0, 0, 0, 0, 0, 1, 1, 1};
        Random r = new Random();
        //a超过一万次退出循环
        int a = 0;
        //记录男生次数
        int boy = 0;
        //记录女生次数
        int girl = 0;
        //循环1000000次，每次随机生成一个索引，然后判断该索引对应的元素是否为0，如果是，则表示随机生成的名字是男生，否则表示是女生
        while (true) {
            if (a == 1000000) {
                break;
            }
            int index = r.nextInt(pot.length);
            if (pot[index] == 0) {
                //随机namesBoy
                int boyIndex = r.nextInt(namesBoy.length);
                boy++;
                //System.out.println(namesBoy[boyIndex]);
            } else {
                //随机namesGirl
                int girlIndex = r.nextInt(namesGirl.length);
                girl++;
                //System.out.println(namesGirl[girlIndex]);
            }
            a++;
        }
        System.out.println("男生被匹配的次数为" + boy + "次");
        System.out.println("女生被匹配的次数为" + girl + "次");
        System.out.println("男生和女生的比例为" + boy / girl + ":1");

    }
}